<?php 
class Facturacionxdia extends AppModel {
    var $name = 'Facturacionxdia';
 
    public function obtenerReporteFacturacion($condiciones) {
        $resultado = array();
        // va a ser una consulta personalizada
        
        if ($condiciones['corte_facturacion'] == 1) {
            // corte por mes
            $campos = array('MONTH(Facturacionxdia.fecha) AS mes', 'YEAR(Facturacionxdia.fecha) AS anio', 'SUM(Facturacionxdia.total) AS importe' );
            $filtros = array('Facturacionxdia.fecha BETWEEN ? AND ?' => array($condiciones['fecha_desde'],$condiciones['fecha_hasta']));
            $grupo = array('MONTH(Facturacionxdia.fecha)', 'YEAR(Facturacionxdia.fecha)');
            $orden = array('Facturacionxdia.fecha');
        }
        if ($condiciones['corte_facturacion'] == 2) {
            // corte por dia
            $campos = array('DAY(Facturacionxdia.fecha) AS dia', 'MONTH(Facturacionxdia.fecha) AS mes', 'YEAR(Facturacionxdia.fecha) AS anio', 'SUM(Facturacionxdia.total) AS importe' );
            $filtros = array('Facturacionxdia.fecha BETWEEN ? AND ?' => array($condiciones['fecha_desde'],$condiciones['fecha_hasta']));
            $grupo = array('DAY(Facturacionxdia.fecha)','MONTH(Facturacionxdia.fecha)', 'YEAR(Facturacionxdia.fecha)');
            $orden = array('Facturacionxdia.fecha');
        }
            
        $resultado = $this->find('all', array('conditions' => $filtros, 'group' => $grupo, 'fields' => $campos, 'order' => $orden));        
                
        $datos = array();
        if ($condiciones['corte_facturacion'] == 1) {
            $meses1 = date('n', strtotime($condiciones['fecha_desde']));
            $meses2 = date('n', strtotime($condiciones['fecha_hasta']));
            $año1 = date('Y', strtotime($condiciones['fecha_desde']));
            $año2 = date('Y', strtotime($condiciones['fecha_hasta']));

            $mes = $meses1;
            $año = $año1;
            while(!(($año >= $año2) && ($mes > $meses2 ))) {
                $existe = false;
                foreach ($resultado as $item):
                    if (($item[0]['anio'] == $año) && ($item[0]['mes'] == $mes)) {
                        array_push($datos, $item[0]);
                        $existe = true;
                    }
                endforeach;
                if($existe == false) array_push($datos, array('anio' => $año, 'mes' => $mes, 'importe' => 0));                
                $mes++;
                if ($mes > 12) $año++;
            }
        }
                
        if ($condiciones['corte_facturacion'] == 2) {
            $fecha = new DateTime($condiciones['fecha_desde']);
            $fecha_fin = new DateTime($condiciones['fecha_hasta']);

            
            while($fecha <= $fecha_fin) {
                $existe = false;
                $dia = $fecha->format('d');
                $mes = $fecha->format('n');
                $año = $fecha->format('Y');
                foreach ($resultado as $item):
                    if (($item[0]['anio'] == $año) && ($item[0]['mes'] == $mes) && ($item[0]['dia'] == $dia)) {
                        array_push($datos, $item[0]);
                        $existe = true;
                    }
                endforeach;
                if($existe == false) array_push($datos, array('anio' => $año, 'mes' => $mes, 'dia' => $dia, 'importe' => 0));                
                
                $fecha->add(new DateInterval('P1D'));
            }
        }

        return $datos;
    }
   
}
?>
